home *** CD-ROM | disk | FTP | other *** search
- /*
- * Menuselection.c
- */
-
- #define QMenuselection
-
- #include "QMain.h"
- #include "QMenuselection.h"
- #include "QCibarmenu.h"
- #include "QCviewermenu.h"
- #include "QFrcerdrwall.h"
- #include "QFrceselrdrw.h"
- #include "QCreatenewview.h"
-
- #include "os.h"
-
- int ConvertHextoInt(char *hexstring) {
- int result;
- int i;
-
- result=0; i=0;
- while ((result!=-1) && (hexstring[i]>31) && (i<32)) {
- result=result*16+(hexstring[i]-48);
- if (hexstring[i]>='A') result=result-7;
- if (hexstring[i]>='a') result=result-32;
- i++;
- }
- return (result);
- }
-
- void Menuselection (wimp_block *Block)
- {
- wimp_pointer pointer_info;
- int dummy, OSelstart, OSelend;
- wimp_window_state Wstate;
-
- wimp_get_pointer_info(&pointer_info);
- switch (Activemenu)
- {
- case Menuident_Iconbar:
- if (Block->selection.items[0]==Itemiconbarquit)
- {
- Quit=TRUE;
- }
- else
- {
- if (pointer_info.buttons==0)
- {
- Createiconbarmenu(menu_pos);
- }
- }
- break;
- case Menuident_Viewer:
- switch (Block->selection.items[0]) {
- case Itemviewersave:
- os_writec((char)7);
- break;
- case Itemviewerselect:
- switch (Block->selection.items[1]) {
- case Itemselectstart:
- dummy=ConvertHextoInt(selstartval);
- if (dummy!=-1) {
- OSelstart=Selectionstart;
- OSelend=Selectionend;
- Selectionstart=(dummy-Baseaddress)/4;
- if (Selectionend<=Selectionstart) {
- Selectionend=Selectionstart+1;
- }
- ForceSelectionRedraw(OSelstart, OSelend);
- }
- break;
- case Itemselectend:
- dummy=ConvertHextoInt(selendval);
- if (dummy!=-1) {
- OSelstart=Selectionstart;
- OSelend=Selectionend;
- Selectionend=(dummy-Baseaddress)/4;
- if (Selectionend<=Selectionstart) {
- Selectionstart=Selectionend-1;
- }
- if (Selectionstart<0) {
- Selectionstart=0;
- Selectionend=1;
- }
- ForceSelectionRedraw(OSelstart, OSelend);
- }
- break;
- case Itemselectsave:
- break;
- }
- break;
- case Itemviewergotoaddress:
- dummy=ConvertHextoInt(gotoval);
- if ((dummy!=-1) && (Menuviewer!=(wimp_w)-1)) {
- Wstate.w=Menuviewer;
- wimp_get_window_state(&Wstate);
- Block->open.w=Wstate.w;
- Block->open.visible=Wstate.visible;
- Block->open.xscroll=Wstate.xscroll;
- Block->open.yscroll=0-((dummy-Baseaddress)/4)*Charheight;
- Block->open.next=Wstate.next;
- wimp_open_window(&(Block->open));
- }
- break;
- case Itemviewernewview:
- dummy=ConvertHextoInt(newviewval);
- if (dummy!=-1) {
- Createnewview((dummy-Baseaddress)/4);
- }
- break;
- case Itemviewersetbase:
- dummy=ConvertHextoInt(newbaseval);
- if (dummy!=-1) {
- Baseaddress=dummy;
- ForceRedrawAllViewers();
- }
- break;
- case Itemviewerdisplay:
- switch (Block->selection.items[1]) {
- case Itemdisplayinvert:
- Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
- entries[Foregroundcolour].menu_flags=0;
- Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
- entries[Backgroundcolour].menu_flags=0;
- dummy=Foregroundcolour;
- Foregroundcolour=Backgroundcolour;
- Backgroundcolour=dummy;
- Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
- entries[Foregroundcolour].menu_flags=wimp_MENU_TICKED;
- Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
- entries[Backgroundcolour].menu_flags=wimp_MENU_TICKED;
- ForceRedrawAllViewers();
- break;
- case Itemdisplayforeground:
- if (Block->selection.items[2] != -1) {
- Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
- entries[Foregroundcolour].menu_flags=0;
- Foregroundcolour=Block->selection.items[2];
- Displaysubmenu.entries[Itemdisplayforeground].sub_menu->
- entries[Foregroundcolour].menu_flags=wimp_MENU_TICKED;
- ForceRedrawAllViewers();
- }
- break;
- case Itemdisplaybackground:
- if (Block->selection.items[2] != -1) {
- Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
- entries[Backgroundcolour].menu_flags=0;
- Backgroundcolour=Block->selection.items[2];
- Displaysubmenu.entries[Itemdisplaybackground].sub_menu->
- entries[Backgroundcolour].menu_flags=wimp_MENU_TICKED;
- ForceRedrawAllViewers();
- }
- break;
- default: break;
- }
- break;
- case Itemviewerquit:
- Quit=TRUE;
- break;
- default: break;
- }
- if ((pointer_info.buttons & wimp_CLICK_ADJUST)!=0)
- {
- Createviewermenu(menu_pos, Menuviewer);
- }
- break;
- default: ;
- };
- }
-